package com.htu.courseService.common.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * Created By JNNarrator on 2024/9/5 09:56
 * email: jiangn09@chinatelecom.cn
 */
@Configuration
public class RedisConfig {
	/**
	 * Redis配置
	 */
	@Bean
	@Primary
	@SuppressWarnings(value = {"unchecked", "rawtypes"})
	public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory connectionFactory) {
		RedisTemplate<Object, Object> template = new RedisTemplate<>();
		template.setConnectionFactory(connectionFactory);
		FastJsonRedisSerializer<Object> serializer = new FastJsonRedisSerializer<>(Object.class);
		
		// 使用StringRedisSerializer来序列化和反序列化redis的key值
		template.setKeySerializer(new StringRedisSerializer());
		template.setValueSerializer(serializer);
		
		// Hash的key也采用StringRedisSerializer的序列化方式
		template.setHashKeySerializer(new StringRedisSerializer());
		template.setHashValueSerializer(serializer);
		
		template.afterPropertiesSet();
		
		return template;
	}
}
